package cn.lili.common.utils;

import org.springframework.beans.BeanUtils;

import java.util.List;
import java.util.stream.Collectors;

public class DtoToVoConverter {

    private DtoToVoConverter() {
        // 私有构造方法，防止实例化
    }

    public static <D, V> List<V> convert(List<D> dtoList, Class<V> voClass) {
        return dtoList.stream()
                .map(dto -> convert(dto, voClass))
                .collect(Collectors.toList());
    }

    public static <D, V> V convert(D dto, Class<V> voClass) {
        try {
            V vo = voClass.getDeclaredConstructor().newInstance();
            // 执行属性赋值操作，可以使用BeanUtils.copyProperties或手动设置属性值的方式
            BeanUtils.copyProperties(dto,vo);
            return vo;
        } catch (Exception e) {
            throw new RuntimeException("Failed to convert DTO to VO", e);
        }
    }
}
